const Router = require('koa-router');

const fileRouter = new Router({prefix: '/upload'});

const {
    avatarHandler,
    pictureHandler,
    pictureResize
} = require('../middleware/upload.middleware');

const {
    saveAvatarInfo,
    avatarInfo,
    savePictureInfo,
} = require('../controller/file.controller')

const { 
    verifyAuth,
    verifyPermission
} = require('../middleware/auth.middleware');


/**
 * 功能：用户上传头像或者其他文件，服务器端存储用户上传的文件及上传文件的基本信息
 * verifyAuth中间件：验证权限
 * avatarHandler：存储上传的文件
 * saveAvatarInfo：存储上传的基本信息到数据库
 */
fileRouter.post('/avatar', verifyAuth, avatarHandler, saveAvatarInfo);

/**
 * 功能：查看用户最新上传的头像
 */
fileRouter.get('/:id/avatar', avatarInfo);

/**
 * 功能：给动态添加配图，在服务器端存储用户上传的配图文件信息
 * 注：请求时传递参数有两种方式query和params,如果你使用query方式，你就不能使用verifyPermission中间件验证此用户对
 *    这条动态是否有权限(我们实现verifyPermission中间件时拿表的名字时拿的是你params请求路径中的字段作为表名，前提是你书写路径时候
 *    必须严格遵守RESTful风格)那么别人就可以对你的动态任意进行配图,所以这里我们使用params方式进行参数传递，还可以验证权限，非常好
 *    
 */
fileRouter.post('/:momentId/picture', verifyAuth, pictureHandler, pictureResize, verifyPermission, savePictureInfo);



module.exports = fileRouter;